iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
自我挑戰組

富士大顆系列 第 8

vol.08 如紅寶石般閃耀的您-Ruby 學習筆記 (四) array methods 20+ 選!

  • 分享至 

  • xImage
  •  

你好,我是富士大顆 Aiko
今天來介紹 array 的 20 個 methods !


但首先要解釋一下 array 是什麼:
陣列(Array)是一種有順序的資料集合型態,可以用來儲存多個元素,這些元素可以是任何種類型的物件,包括數字、字串、符號、物件等。Ruby 的陣列是動態的,注意了這個是動態型別的概念!,所以可以根據需要不斷新增或刪除元素,並且陣列的大小可以根據其中包含的元素數量自動調整。

新增/修改/刪除原陣列

unshift(e): 在陣列開頭新增元素 e

arr = ["a", "i", "k", "o"]
puts arr.unshift("r")
#["r", "a", "i", "k", "o"]

push(e): 在陣列最後新增元素 e

arr = ["a", "i", "k", "o"]
puts arr.push("r")
#["a", "i", "k", "o", "r"]

其實還有更簡潔的寫法<<

arr << "r"
puts arr
#["a", "i", "k", "o", "r"]

shift: 刪除並回傳陣列的第一個元素

arr = ["a", "i", "k", "o"]
puts arr.shift
#a
puts arr
#["i", "k", "o"]

pop: 刪除並回傳陣列的最後一個元素

arr = ["a", "i", "k", "o"]
puts arr.pop
#o
puts arr
#["a", "i", "k"]

delete_at(n):刪除某索引 n 元素

arr = ["a", "i", "k", "o"]
puts arr.delete_at(3)
#["a", "i", "k"]

clear: 清空陣列的所有元素。

arr = ["a", "i", "k", "o"]
puts arr.clear
#[]

原 array 不變,但是創造並回傳新的 array

uniq: 創造一個不重複元素的新陣列

arr = ["aiko", "aiko", "33y"]
puts arr.uniq
#["aiko", "33y"]

sort: 創造一個升冪的新陣列

arr = ["a", "i", "k", "o"]
puts arr.sort
#["a", "i", "k", "o"] #(好好笑怎麼沒變啦 這個真的是新的雖然長得跟 arr 一樣)

reverse: 回傳陣列的反轉版本。

arr = ["a", "i", "k", "o"]
puts arr.reverse
#["o", "k", "i", "a"]

reverse! 會改變原陣列

arr = ["a", "i", "k", "o"]
puts arr.reverse!
#["o", "k", "i", "a"]
puts arr
#["o", "k", "i", "a"]

map / collect: 對陣列的每個元素操作並回傳一個新陣列。

arr = ["a", "i", "k", "o"]
puts arr.map{ |e| e + "r"}
#["ar", "ir", "kr", "or"]

select / filter: 根據操作篩選元素並回傳新陣列。

arr = ["a", "i", "k", "o"]
puts arr.filter{ |e| e == "a"}
#["a"]

reject: 根據操作排除該元素並回傳新陣列。

arr = ["a", "i", "k", "o"]
puts arr.reject{ |e| e == "a"}
#["i", "k", "o"]

檢查系列 return boolean

empty?: 檢查陣列是否為空。

arr = ["a", "i", "k", "o"]
puts arr.empty?
#false

include?(e): 檢查陣列是否包含 e。

arr = ["a", "i", "k", "o"]
puts arr.include?("e")
#false

index 相關

index(e): 回傳元素在陣列中的索引值,如果不存在則回傳 nil

arr = ["a", "i", "k", "o"]
puts arr.include?("e")
#nil
puts arr.include?("a")
#0

first(n): 回傳陣列的前 n 個元素。

arr = ["a", "i", "k", "o"]
puts arr.first(2)
#["a", "i"]

last(n): 回傳陣列的最後 n 個元素。

arr = ["a", "i", "k", "o"]
puts arr.last(2)
#["k", "o"]

length / size: 回傳陣列的元素數量。

arr = ["a", "i", "k", "o"]
puts arr.size
#4

其他

each_with_index: 操作陣列的每個元素並且可以回傳索引值。

arr = ["a", "i", "k", "o"]
arr.each_with_index do |e, inx|
  puts "Index #{inx}: array: #{e}"
end
#Index 0: array: "a"
#Index 1: array: "b"
#Index 2: array: "c"
#Index 3: array: "d"

.each 不一樣哦,.each獨立使用是無法像each_with_index

arr = ["a", "i", "k", "o"]
arr.each do {|e| puts e}
end
#"a"
#"i"
#"k"
#"o"

但是!!!.each.with_index就可以當成each_with_index
同樣來取用 index
reduceinject: 使用操作對陣列的元素進行累積。

arr = [1, 2, 3, 4, 5]
puts arr.reduce(0) { |acc, cv| acc + cv }
#15

join(separator): 使用指定的分隔將陣列轉換為字串。

arr = ["Aiko", "is", "33y."]
puts arr.join(" ")
# "Aiko is 33y."

好皮 來不及介紹 hash 啦哈哈哈哈哈


上一篇
vol.07 如紅寶石般閃耀的您-Ruby 學習筆記 (三) 數字 methods 20+ 選!
下一篇
vol.09 如紅寶石般閃耀的您-Ruby 學習筆記 (五) hash methods 10+ 選!
系列文
富士大顆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言